package com.multithreading.chart3;

import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

/**
 * @author chenqb
 * @version 1.0
 * @description: 随机数生成工具测试
 * random 在多线程下需要竞争种子原始种子变量更新操作。
 * ThreadLocalRandom 使用ThreadLocal的原理，让每一个线程本地工作内存中都保存一个种子变量
 * 多线程下计算种子时时根据自己线程内部维护的种子变量计算值的。
 * 从而避免了竞争，减小cas自旋造成的CPU损耗
 * @date 2022/4/15 14:20
 */
public class RandomTest {
    public static void main(String[] args) {
        //1.创建一个默认种子的随机数生成器
        Random random = new Random();

        ThreadLocalRandom threadLocalRandom = ThreadLocalRandom.current();

        //2.输出10个0-5之间的随机数
        for (int i = 0; i < 10; i++) {
            System.out.println(random.nextInt(5));
        }


    }



}
